import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[][] arr1 = new int[n][2];
        int[][] arr2 = new int[m][2];

        for (int i = 0; i < n; i++) {
            arr1[i][0] = scanner.nextInt();
            arr1[i][1] = scanner.nextInt();
        }

        for (int i = 0; i < m; i++) {
            arr2[i][0] = scanner.nextInt();
            arr2[i][1] = scanner.nextInt();
        }

        Solution solution = new Solution();
        solution.countUnguarded(x,y,arr1,arr2);
    }
}

class Solution {
    public int countUnguarded(int x, int y, int[][] guards, int[][] walls) {
        int[][] arr = new int[x][y];
        int n = guards.length;
        int m = walls.length;

        for (int i = 0; i < n; i++) {
            arr[guards[i][0]][guards[i][1]] = -1;
        }

        for (int i = 0; i < m; i++) {
            arr[walls[i][0]][walls[i][1]] = -1;
        }


        for (int i = 0; i < n; i++) {
            int x1 = guards[i][0];
            int y1 = guards[i][1];

            //上
            while(--x1 >= 0 && arr[x1][y1] != -1){
                arr[x1][y1] = 1;
            }
            x1 = guards[i][0];

            //下
            while(++x1 < x && arr[x1][y1] != -1){
                arr[x1][y1] = 1;
            }
            x1 = guards[i][0];

            //左
            while(--y1 >= 0 && arr[x1][y1] != -1){
                arr[x1][y1] = 1;
            }
            y1 = guards[i][1];

            //右
            while(++y1 < y && arr[x1][y1] != -1){
                arr[x1][y1] = 1;
            }
        }
        int res = 0;
        for (int i = 0; i < x; i++) {
            for (int j = 0; j < y; j++) {
                if(arr[i][j] == 0){
                    res++;
                }
            }
        }
        return res;
    }
}

//class Solution {
//    public int countUnguarded(int x, int y, int[][] guards, int[][] walls) {
//        int[][] arr = new int[x][y];
//        int n = guards.length;
//        int m = walls.length;
//
//        for (int i = 0; i < n; i++) {
//            arr[guards[i][0]][guards[i][1]] = 2;
//        }
//
//        for (int i = 0; i < m; i++) {
//            arr[walls[i][0]][walls[i][1]] = 1;
//        }
//
//
//        for (int i = 0; i < n; i++) {
//            int x1 = guards[i][0];
//            int y1 = guards[i][1];
//            boolean flag = true;
//
//
//            //左
//            while(--x1 >= 0 && flag && arr[x1][y1] != 2){
//                for (int j = 0; j < m; j++) {
//                    if(x1 == walls[j][0] && y1 == walls[j][1]){
//                        flag = false;
//                        break;
//                    }
//                }
//                arr[x1][y1] = 1;
//            }
//            x1 = guards[i][0];
//            flag = true;
//
//            //右
//            while(++x1 < x && flag && arr[x1][y1] != 2){
//                for (int j = 0; j < m; j++) {
//                    if(x1 == walls[j][0] && y1 == walls[j][1]){
//                        flag = false;
//                        break;
//                    }
//                }
//                arr[x1][y1] = 1;
//            }
//            x1 = guards[i][0];
//            flag = true;
//
//            //上
//            while(--y1 >= 0 && flag && arr[x1][y1] != 2){
//                for (int j = 0; j < m; j++) {
//                    if(x1 == walls[j][0] && y1 == walls[j][1]){
//                        flag = false;
//                        break;
//                    }
//                }
//                arr[x1][y1] = 1;
//            }
//            y1 = guards[i][1];
//            flag = true;
//
//            //下
//            while(++y1 < y && flag && arr[x1][y1] != 2){
//                for (int j = 0; j < m; j++) {
//                    if(x1 == walls[j][0] && y1 == walls[j][1]){
//                        flag = false;
//                        break;
//                    }
//                }
//                arr[x1][y1] = 1;
//            }
//        }
//        int res = 0;
//        for (int i = 0; i < x; i++) {
//            for (int j = 0; j < y; j++) {
//                if(arr[i][j] == 0){
//                    res++;
//                }
//            }
//        }
//        return res;
//    }
//}